package socialkademlia.message;
import java.io.IOException;
import kademlia.KadServer;
import kademlia.message.AcknowledgeMessage;
import kademlia.message.ConnectMessage;
import kademlia.message.Message;
import kademlia.message.Receiver;
import socialkademlia.SocialKademliaNode;
/**
* Receives a ConnectMessage and sends an AcknowledgeMessage as reply.
*
* @author Joshua Kissoon
* @created 20140219
*/
public class ConnectReceiver implements Receiver
{
private final KadServer server;
private final SocialKademliaNode localNode;
public ConnectReceiver(KadServer server, SocialKademliaNode local)
{
this.server = server;
this.localNode = local;
}
/**
* Handle receiving a ConnectMessage
*
* @param comm
*
* @throws java.io.IOException
*/
@Override
public void receive(Message incoming, int comm) throws IOException
{
ConnectMessage mess = (ConnectMessage) incoming;
/* Update the local space by inserting the origin node. */
this.localNode.getRoutingTable().insert(mess.getOrigin());
/* Respond to the connect request */
AcknowledgeMessage msg = new AcknowledgeMessage(this.localNode.getNode());
/* Reply to the connect message with an Acknowledgement */
this.server.reply(mess.getOrigin(), msg, comm);
}
/**
* We don't need to do anything here
*
* @param comm
*
* @throws java.io.IOException
*/
@Override
public void timeout(int comm) throws IOException
{
}
}